package com.qf.team2.netdisc.admin.service;

import com.qf.team2.netdisc.common.exception.BusinessException;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 管理员操作服务接口
 *
 * @author Simon_Wong
 * @date 2021/05/21
 * @since 2021/5/20 19:56
 */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
public interface AdminManageService {

    /**
     * 根据传入的用户id设置VIP
     *
     * @param userId 用户id
     * @return int
     */
    int setVIPByUserId(Integer userId);

    /**
     * 根据传入的所有用户id设置VIP
     *
     * @param userIds 用户id
     * @return {@link List<Integer>} 返回设置失败的用户id列表
     */
    List<Integer> setAllUserVIP(Integer... userIds);

    /**
     * 根据传入的文件id设置文件为删除状态
     *
     * @param documentId 文件id
     * @return int
     */
    int setDocumentDeleted(Integer documentId);

    /**
     * 根据传入的所有文件id设置文件为删除状态
     *
     * @param documentIds 文件id
     * @return {@link List<Integer>} 返回设置失败的文件id列表
     */
    List<Integer> setAllDocumentDeleted(Integer... documentIds);

    /**
     * 根据传入的用户id设置普通用户
     *
     * @param userId 用户id
     * @return int
     */
    int setCommonByUserId(Integer userId);

    /**
     * 根据传入的所有用户id设置普通用户
     *
     * @param userIds 用户id
     * @return {@link List<Integer>} 返回设置失败的用户id列表
     */
    List<Integer> setAllUserCommon(Integer... userIds);

    /**
     * 根据传入的文件id设置文件为未删除状态
     *
     * @param documentId 文件id
     * @return int
     */
    int setDocumentUndeleted(Integer documentId);

    /**
     * 根据传入的所有文件id设置文件为未删除状态
     *
     * @param documentIds 文件id
     * @return {@link List<Integer>} 返回设置失败的文件id列表
     */
    List<Integer> setAllDocumentUndeleted(Integer... documentIds);

    /**
     * 根据传入的用户id设置用户为删除状态
     *
     * @param userId 用户id
     * @return int
     */
    int setUserDeleted(Integer userId);

    /**
     * 根据传入的所有用户id设置用户为删除状态
     *
     * @param userIds 用户id
     * @return {@link List<Integer>}
     */
    List<Integer> setAllUserDeleted(Integer... userIds);

    /**
     * 根据传入的用户id设置用户为未删除状态
     *
     * @param userId 用户id
     * @return int
     */
    int setUserUndeleted(Integer userId);

    /**
     * 根据传入的所有用户id设置用户为未删除状态
     *
     * @param userIds 用户id
     * @return {@link List<Integer>}
     */
    List<Integer> setAllUserUndeleted(Integer... userIds);
}
